package br.pb.sistcomp.dao;

import br.pb.sistcomp.entity.Lance;
import br.pb.sistcomp.entity.Venda;
import br.pb.sistcomp.exception.ErroAoRemoverException;
import br.pb.sistcomp.exception.ErroAoSalvarException;
import java.util.List;

/**
 * Interface that represents an part logic in the system
 *
 * @author jefferson Bello, Jefferson.bello@dce.ufpb.br
 * @version 1.0
 *
 * Copyright (C) 2011 SistComp.
 */
public interface VendaDao {

    /**
     * Método responsável em inserir uma venda no banco de dados
     * @param Um objeto do tipo venda, contendo todas informações da venda.
     */
    public void cadastrarVenda(Venda v) throws ErroAoSalvarException;

    /**
     * Método responsável em remover uma venda no banco de dados
     * @param venda do tipo Venda, objeto passado por parametro que irá ser removido do banco de dados
     */
    public void removerVenda(Venda venda) throws ErroAoRemoverException;

    /**
     * Método responsável em listar as vendas considerando a forma de pagamento informada.
     * @param tipo String, que representa o tipo de pagamento qual será informado para servir de filtro. ( A vista, cartao ou boleto )
     * @return retorna uma lista contendo todas as vendas realizada com aquele tipo de pagamento informado.
     */
    public List<Venda> listarVendas();

    /**
     * Método responsavel em filtrar o lance mais alto dado a uma venda.
     * @return Retorna um objeto do lance mais alto.
     */
    public Lance getLanceMaisAlto();
    //public List<Venda> listarVendas(String formaDePagamento);
}
